﻿using System;
using System.Collections;
using System.Linq;
using System.Text;
using NGI_Enumerador;

namespace NGI_Entidades
{
    public class Factura : CamposAuditoria
    {
        #region Propiedades
        private Int32 _id = 0;
        private FacturaCabecera _cabecera;
        private FacturaDetalleElemento[] _detalle;
        private TiposFactura _tipoFactura = TiposFactura.A;
        #endregion Propiedades

        #region Getters y Setters
        public Int32 ID
        {
            get { return _id; }
            set { _id = value; }
        }
        
        public FacturaCabecera Cabecera
        {
            get { return _cabecera; }
            set { _cabecera = value; }
        }

        public FacturaDetalleElemento[] Detalle
        {
            get { return _detalle; }
            set { _detalle = value; }
        }

        public TiposFactura TipoFactura
        {
            get { return _tipoFactura; }
            set { _tipoFactura = value; }
        }
        #endregion Getters y Setters

        #region Constructores
        public Factura() { }

        public Factura(FacturaCabecera Cabecera, FacturaDetalleElemento[] Detalle, TiposFactura TipoFactura)
        {
            this._cabecera = Cabecera;
            this._detalle = Detalle;
            this._tipoFactura = TipoFactura;
        }
        #endregion Constructores

        #region Constructores Estáticos
        public static Factura Nuevo(FacturaCabecera Cabecera, FacturaDetalleElemento[] Detalle, TiposFactura TipoFactura)
        {
            return new Factura(Cabecera, Detalle, TipoFactura);
        }
        #endregion Constructores Estáticos
    }
}
